package com.example.crmebshop.zcom.util;

import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;

public class RxUtils {
    private static CompositeDisposable disposables = new CompositeDisposable();
    private static final Object lock = new Object();
    private RxUtils() {} // 阻止实例化

    public static CompositeDisposable provideCompositeDisposable() {
        return disposables;
    }

    public static void add(Disposable disposable) {
        synchronized (lock) {
            disposables.add(disposable);
        }
    }

    public static void dispose() {
        synchronized (lock) {
            disposables.dispose(); // 清理所有订阅并重置CompositeDisposable为新实例，防止重复使用已dispose的对象导致崩溃。
            disposables = new CompositeDisposable(); // 重置CompositeDisposable，避免重复使用已dispose的对象导致崩溃。
        }
    }
}
